From 56b309fa71fd87ee983e2a6b2d41cc565d31a08d Mon Sep 17 00:00:00 2001 From: "djm@kirby.fc.hp.com" Date: Tue, 11 Oct 2005 15:50:21 -0600 Subject: [PATCH] Fixes for correct itir handling in vcpu_translate (broke simulator) --- xen/arch/ia64/xen/vcpu.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xen/arch/ia64/xen/vcpu.c b/xen/arch/ia64/xen/vcpu.c index 769892b2b4..f3990a6cf5 100644 --- a/xen/arch/ia64/xen/vcpu.c +++ b/xen/arch/ia64/xen/vcpu.c @@ -1403,9 +1403,11 @@ IA64FAULT vcpu_translate(VCPU *vcpu, UINT64 address, BOOLEAN is_data, UINT64 *pt return (is_data ? IA64_DATA_TLB_VECTOR : IA64_INST_TLB_VECTOR); vcpu_thash(vcpu, address, iha); - if (__copy_from_user(&pte, (void *)(*iha), sizeof(pte)) != 0) + if (__copy_from_user(&pte, (void *)(*iha), sizeof(pte)) != 0) { // FIXME?: does itir get set for vhpt faults? + *itir = vcpu_get_itir_on_fault(vcpu,*iha); return IA64_VHPT_FAULT; + } /* * Optimisation: this VHPT walker aborts on not-present pages @@ -1418,6 +1420,7 @@ IA64FAULT vcpu_translate(VCPU *vcpu, UINT64 address, BOOLEAN is_data, UINT64 *pt vhpt_translate_count++; return IA64_NO_FAULT; } + *itir = vcpu_get_itir_on_fault(vcpu,address); return (is_data ? IA64_DATA_TLB_VECTOR : IA64_INST_TLB_VECTOR); } -- 2.30.2